#!/usr/bin/env bash
set -e

chmod +x /scripts/*.sh
. /scripts/common.sh
. /scripts/common-run.sh

announce_startup                        # Print startup banner
setup_timezone                          # Check if we need to configure the container timezone
check_environment_sane                  # Check if the the environment is sane
rsyslog_log_format                      # Setup rsyslog output format
anon_email_log                          # Setup email anonymizer
setup_conf                              # Copy over files from /etc/postfix.template to /etc/postfix, if the user mounted the folder manually
reown_folders                           # Make and reown /var/spool/postfix/ folders
postfix_enable_chroot                   # Allow Postfix to run in chroot
postfix_upgrade_default_database_type   # Compatibility layer. Debian still uses 'hash:', but newer distributions use 'lmbd:'
postfix_upgrade_conf                    # Upgrade old coniguration, replace "hash:" and "btree:" databases to "lmdb:"
postfix_upgrade_daemon_directory        # Change the 'daemon_directory' postfix configuration, if a change is detected from Alpine<->Debian/Ubuntu
postfix_disable_utf8                    # Disable SMTPUTF8, because libraries (ICU) are missing in alpine
postfix_create_aliases                  # Update aliases database. It's not used, but postfix complains if the .db file is missing
postfix_disable_local_mail_delivery     # Disable local mail delivery
postfix_disable_domain_relays           # Don't relay for any domains
postfix_increase_header_size_limit      # Increase the allowed header size, the default (102400) is quite smallish
postfix_restrict_message_size           # Restrict the size of messages (or set them to unlimited)
postfix_reject_invalid_helos            # Reject invalid HELOs
postfix_set_hostname                    # Set up host name
postfix_set_relay_tls_level             # Set TLS level security for relays
postfix_setup_xoauth2_pre_setup         # (Pre) Setup XOAUTH2 authentication
postfix_setup_relayhost                 # Setup a relay host, if defined
postfix_setup_xoauth2_post_setup        # (Post) Setup XOAUTH2 autentication
postfix_setup_networks                  # Set MYNETWORKS
postfix_setup_debugging                 # Enable debugging, if defined
postfix_setup_sender_domains            # Configure allowed sender domains
postfix_setup_masquarading              # Setup masquaraded domains
postfix_setup_header_checks             # Enable SMTP header checks, if defined
postfix_setup_dkim                      # Configure DKIM, if enabled
postfix_setup_smtpd_sasl_auth           # Enable sender sasl auth, if defined
postfix_custom_commands                 # Apply custom postfix settings
opendkim_custom_commands                # Apply custom OpenDKIM settings
postfix_open_submission_port            # Enable the submission port
execute_post_init_scripts               # Execute any scripts found in /docker-init.db/
unset_sensitive_variables               # Remove environment variables that contains sensitive values (secrets) that are read from conf files

notice "Starting: ${emphasis}rsyslog${reset}, ${emphasis}crond${reset}, ${emphasis}postfix${reset}$DKIM_ENABLED"
exec supervisord -c /etc/supervisord.conf
